CREATE TABLE [dbo].[tb_MovimientosTramites]
(
[ID] [int] NOT NULL IDENTITY(1, 1),
[DependenciaOrigen] [int] NULL,
[DependenciaDestino] [int] NULL,
[FechaIngreso] [datetime] NULL,
[FechaFin] [datetime] NULL,
[Usuario] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ObservacionesInternas] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ObservacionesPublicas] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[idTramite] [int] NULL
) ON [PRIMARY]
CREATE TRIGGER [dbo].[agregarMovimiento] ON [dbo].[tb_MovimientosTramites] 
FOR INSERT 
AS
	DECLARE @id INT
	DECLARE @idTramite INT
	DECLARE @idMoviemientoTramiteAnterior INT
    DECLARE @FechaIngreso DATETIME
	DECLARE @DependenciaOrigen INT
	DECLARE @Usuario INT
	DECLARE @DependenciaUsuario INT 
	DECLARE @CantMovActual INT 

	SELECT @FechaIngreso=FechaIngreso FROM INSERTED 
    SELECT @id=ID FROM INSERTED 
	SELECT @idTramite=idTramite FROM INSERTED 
	set @DependenciaOrigen=(SELECT TOP 1 DependenciaDestino FROM tb_MovimientosTramites WHERE idTramite=@idTramite AND ID<>@id ORDER BY ID DESC)
	set @idMoviemientoTramiteAnterior=(SELECT TOP 1 ID FROM tb_MovimientosTramites WHERE idTramite=@idTramite AND ID<>@id ORDER BY ID DESC)

	set @DependenciaUsuario=(SELECT TOP 1 Dependencia FROM dbo.tb_Usuarios WHERE LTRIM(NTUser)=LTRIM(SYSTEM_USER))

	SET @CantMovActual=(SELECT COUNT(*) FROM dbo.tb_MovimientosTramites WHERE idTramite = @idTramite)

	IF @DependenciaOrigen = @DependenciaUsuario OR (@DependenciaUsuario=339 AND @CantMovActual < 2)BEGIN
		IF @CantMovActual < 2
		BEGIN
		UPDATE dbo.tb_MovimientosTramites SET FechaIngreso=GETDATE(),DependenciaOrigen=339,Usuario=SYSTEM_USER WHERE ID=@id
		END
		ELSE BEGIN
		UPDATE dbo.tb_MovimientosTramites SET FechaIngreso=GETDATE(),DependenciaOrigen=@DependenciaOrigen,Usuario=SYSTEM_USER WHERE ID=@id
		UPDATE dbo.tb_MovimientosTramites SET FechaFin=GETDATE() WHERE ID=@idMoviemientoTramiteAnterior
		END
	END
	ELSE BEGIN
		ROLLBACK TRANSACTION 
		RAISERROR('Error el Usuario no pertenece a la Dependencia donde se debe solicitar este movimiento', 16,1)
	END

	  

	
GO

ALTER TABLE [dbo].[tb_MovimientosTramites] ADD CONSTRAINT [PK__tb_Movim__3214EC2763BFF8F3] PRIMARY KEY CLUSTERED  ([ID]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] WITH NOCHECK ADD CONSTRAINT [FK_tb_MovimientosTramites_tb_DependenciasTramites] FOREIGN KEY ([DependenciaDestino]) REFERENCES [dbo].[tb_DependenciasTramites] ([idDependencia])
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] WITH NOCHECK ADD CONSTRAINT [FK_tb_MovimientosTramites_tb_DependenciasTramites1] FOREIGN KEY ([DependenciaOrigen]) REFERENCES [dbo].[tb_DependenciasTramites] ([idDependencia])
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] WITH NOCHECK ADD CONSTRAINT [FK_tb_MovimientosTramites_tb_TramitesResiduales] FOREIGN KEY ([idTramite]) REFERENCES [dbo].[tb_TramitesResiduales] ([ID])
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] NOCHECK CONSTRAINT [FK_tb_MovimientosTramites_tb_DependenciasTramites]
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] NOCHECK CONSTRAINT [FK_tb_MovimientosTramites_tb_DependenciasTramites1]
GO
ALTER TABLE [dbo].[tb_MovimientosTramites] NOCHECK CONSTRAINT [FK_tb_MovimientosTramites_tb_TramitesResiduales]
GO
